However, Dinesh Chandimal continued to resist for Sri Lanka and in the process got to his sixth Test ton.
Rangana Herath (61) added 116 runs with Chandimal to help the visitors go past England's first innings total.
James Anderson dismissed Milinda Siriwardana early on Day 4.
Stuart Broad bowled Chandimal for 155 and soon after Sri Lanka folded for 475 to set England a target of 79.
In the chase, Alastair Cook scored the required five runs and became the youngest player to reach 10,000 Test runs. He remained unbeaten on 47 to guide England to a series-clinching nine-wicket win.